﻿<?php 
header("Content-Type: text/html;charset=utf-8");
//定义token
define("TOKEN","binleen");
$wechatApi = new WechatApi();
//接收消息  撒的撒多撒大所多撒德萨付撒大无所多爱仕达无多哇所
if(isset($_GET['echostr'])){
	$wechatApi->receiveMsg();
}else{
	$wechatApi->valid();
}
class WechatApi{
	//接收信息
	public function receiveMsg(){
		
		//接收信息
		$postStr = $GLOBALS['HTTP_RAW_POST_DATA'];
		file_put_contents("/www/wwwroot/lfjj/1.txt",$postStr);
		if(!empty( $postStr )){
				libxml_disable_entity_loader(true);//防止外部实体加载
				//xml对象
				$xml = simplexml_load_string($postStr,"SimpleXMLElement",LIBXML_NOCDATA);
				//simplexml_load_string($xml_str, 'SimpleXMLElement', LIBXML_NOCDATA);
				file_put_contents("/www/wwwroot/lfjj/2.txt",$xml);
				//获取类型
				$msgType = $xml->MsgType;//	消息类型，event
				//获取发送方的微信号
				$FromUserName = $xml->FromUserName;
				//事件类型
				if($msgType == "event"){
					switch($xml->Event){
						case "subscribe":
							$content = "欢迎关注四川票务网";
							break;
						 case "click":
							switch($xml->EventKey){
								case "callback":
									$content = "回复#留言#+内容，我们将会收到您的消息，并尽快给您答复，或者拨打客服电话:(400-660-8787)谢谢您的支持！票务君的工作时间为:(09:00—17:30)";									
									break;
								case "help":
									$content = '回复“购票帮助”“支付帮助”“取票帮助”“退票帮助”，即可自助查询对应帮助信息。若需人工帮助，请致电客服电话400-660-8787（9:00-17:30）。时刻表查询、在线购票请：点击此处查询与购票；快速了解如何购票、取票、退票请：点击此处查看购票须知';
									break;
								case "state":
									$content = '回复"城市名称+车站"(成都车站)，即可查询对应城市的联网车站。回复车站名称，即可查询相关车站的对应介绍';
									break;
								case "wether":
									$content = '回复"城市名+天气"（如：成都天气），即可查询对应的城市天气';
									
									break;
								case "ticket":
									$content = '发送地理位置,我们将为您推送离你最近的取票网点';
									break;		
								case "order":
									$content = '请输入要查询的订单号';
									break;		
								}
							break;	
							$contetnt = "点击事件";
							break;	
						case "unsubscribe":
							
							break;	
					}
					 $result = $this->transmitText($xml,$content);
					// echo $result;
				}
		}
	}
	//输出格式
	private function transmitText($object,$content){
		//$text = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]>></MsgType><Content><![CDATA[%s]]></Content></xml>";
		//$txt = sprintf($text,$object->FromUserName, $object->ToUserName, time(), $content);
		$txt = 1654;
		file_put_contents('/www/wwwroot/lfjj/3.txt',$txt);
		echo $txt;
	}
	//接收响应事件
	public function response(){
	
	}
	//调用签名校验
	public function valid(){
		$echoStr = $_GET["echostr"];
		 if($this->checkSignature()){
			echo $echoStr;
			exit;
		}
	}
	//签名校验
	private function checkSignature(){
		//接收签名
		$signature = $_GET['signature'];
		//接收时间戳
		$timestamp = $_GET['timestamp'];
		//接收随机数
		$nonce = $_GET['nonce'];
		$token = TOKEN;
		//将token 时间戳 随机数装进一个数组
		$tempArr = array($token,$timestamp,$nonce);
	
		//排序
		sort($tempArr);
		//将数组转换成字符串
		$tempStr = implode($tempArr);
		//sha1加密
		$tempStr = sha1($tempStr);
		if($signature == $tempStr){
			return true;
		}else{
			return false;
		}
	}
	
}

?>